iT邦幫忙

2022 iThome 鐵人賽

DAY 12
4
自我挑戰組

PixelBit 可以這樣玩!系列 第 12

(Day 12)Edge Impulse 影像辨識實作:模型訓練與使用(Part 1)

  • 分享至 

  • xImage
  •  

這篇文章將會接續上一篇「Edge Impulse 影像辨識實作:資料收集(Part 2)」。

教學原文參考:Edge Impulse 影像辨識實作(下):模型訓練與使用

https://www.circuspi.com/wp-content/uploads/2022/05/1000x526-2.jpg

一、前言

Pixel:Bit 教學(五) 中我們介紹了什麼是 TinyML,在 TinyMLEdge Impulse 所扮演的角色,以及 Edge Impulse 提供了哪些服務,最後更帶大家從 Pixel:Bit 收集圖片資料,轉交 Edge Impulse 做初步的資料預處理及特徵提取。這個單元將帶大家繼續完成「模型訓練&驗證」、「模型測試」、「模型部屬」三個部分,達到實際使用 Pixel:Bit 實作影像分類的功能。

二、模型訓練

Pixel:Bit 教學(五) 文章中我們已經上傳四個類別(剪刀、石頭、布、背景)的資料,並經過 Edge Impulse 提供的特徵提取功能取出資料特徵值,接著我們需要將這些有用的資料進行遷移學習(Transfer learning)訓練。

圖片來源

https://www.circuspi.com/wp-content/uploads/2022/04/01-3.jpg

遷移學習(Transfer learning)是屬於機器學習的一種研究領域,它專注於儲存已有問題的解決模型,並將其利用在其他不同但相關問題上;比如說,用來辨識汽車的知識也可以被用來提升識別卡車的能力,因此我們可容易的從既有已訓練的模型中繼承其經驗,讓它能以少量資料學習新事物。

接下來就依照以下步驟一起進行模型訓練:

  1. 選擇左側欄 Transfer learning
  2. 訓練數值設定
    • 設定 Training Cycles 為 200 次(若訓練結果不理想可再提高次數,但須注意過擬合問題,即模型只學會了訓練資料的內容,對於未知的資料缺乏分辨的能力)。
    • Learning rate(學習速率)使用預設 0.0005。
    • Validation set size(驗證資料比例)使用預設 20%。
    • 若各類別資料數量不一,可以勾選 Auto-balance dataset 選項,它將會自動平衡所有類別資料,讓訓練過程不會因為某類資料特別多而特別偏向那一個類別。
    • 若想要增加其餘不同環境資料可勾選 Data augmentation,它將會對原始資料做特殊處理(如變色、亮度、旋轉、鏡像、加入雜訊等)以增加資料量,若訓練結果總是過擬合也可以試試此選項,加入不同環境資料可讓模型更容易學習到真正的重點(例如模型原本的學習結果可能需要在某種亮度才可正確推論結果,一旦環境亮度改變它將變得不準確),此時加入對資料亮暗度的改變,讓模型適應亮與暗的環境,盡可能去學習其他特點,例如輪廓,慢慢的讓模型學會其中的重點。
  3. 模型的選擇,經過我們反覆測試,在輸入圖像尺寸 48 x 48 下,因 RAM 限制,Pixel:Bit 最大能夠使用的模型為「MobileNetV1 96×96 0.25」,所以最終我們選擇它作為我們的遷移學習模型。
  4. 在確認好我們的模型及相關參數後我們就可按下 Start training,Edge Impulse 將會在線上幫我們訓練模型。

https://www.circuspi.com/wp-content/uploads/2022/04/02.png

訓練完畢後我們可在頁面右側看到訓練完的準確度、損失及相關資訊,從下圖中我們可以看到此次訓練準確度達 86%,LOSS 0.34,並且可以看到每一類別的準確度,其中我們可以發現「剪刀(SCISSORS)」類別準確度最低只有 75%,有高達 18% 被認為是「布」類別(可能他們差異不大,難道是因為差三根手指頭而已??),但也還在可接受的範圍內;最後我們可在下方看到預估的「推論速度」、「RAM、FLASH使用量」,讓我們初步評估是否適合運行在目標裝置上。

https://www.circuspi.com/wp-content/uploads/2022/04/03-3.jpg

三、模型測試

圖片來源

https://www.circuspi.com/wp-content/uploads/2022/04/04.png

模型經過 Edge Impulse 訓練完成後接著就需要測試模型,還記得最初上傳圖片資料時我們選擇「自動拆分資料到訓練、驗證、測試階段」選項,所以每個階段會取各自的資料做處理,在訓練階段它將會針對訓練資料做訓練,訓練過程透過驗證資料驗證準確度。

其中若我們沒有透過測試階段測試模型,單純只看訓練後驗證的準確度,就有可能會產生過擬合(如上圖)的問題,即誤以為模型訓練的結果似乎很好,能夠準確分辨所有事物,但其實模型只是學會了表面工夫,對於沒有學習過的資料實際上是一竅不通,所以最終我們還是需要進一步測試模型,以確保模型對於一些未知的資料也能夠擁有較高的辨識準確度。

  1. 點選 Model testing 進到測試頁面。
  2. 點選 Classify all 將所有測試資料進行影像分類。

分類完畢後我們可以看到有哪些資料分類錯誤,並且可以進一步查看或移動資料到訓練資料集內。

https://www.circuspi.com/wp-content/uploads/2022/04/05.png

從下圖我們可看到整體分類後的準確度高達 84%,並且一樣是「剪刀」類別準確度最低,只有 73%,但也還在可接受的範圍內;整體準確度與訓練後驗證準確度相符,所以我們可以有比較高的信心認為此模型應該沒有問題。

https://www.circuspi.com/wp-content/uploads/2022/04/06.png

請接續「Edge Impulse 影像辨識實作:模型訓練與使用(Part 2)」。

更多有趣系列教學文章


上一篇
(Day 11)Edge Impulse 影像辨識實作:資料收集(Part 2)
下一篇
(Day 13)Edge Impulse 影像辨識實作:模型訓練與使用(Part 2)
系列文
PixelBit 可以這樣玩!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言